// Classe que define metodos utilitarios

#ifndef Utility_hpp
#define Utility_hpp

#include <string>
#include <vector>
#include <GTrie.hpp>
#include <Trie.hpp>

class Utility {
public:
	// Gera uma palavra aleatoria de tamanho 5 e retorna como string
	static std::string randomWord(bool insensitive = false);
	// Gera uma palavra aleatoria de tamanho 5 e grava no buffer
	static void randomWord(char* buffer);
	// Transforma todas as palavras de uma lista em partes menores,
	// de tamanho fixo 5 ou menor, caso nao seja possivel dividir
	// por 5 extamente
	// uma GTrie
	// ppieces sera criada, com nos que apontam para as palavras
	// originais, em words.
	// O vetor qty (previamente criado)
	// contera a quantidade de pedacos que cada palavra
	// original de mesmo indice possui
	// A trie pieces contera os pedacos gerados
	static void split(
		Trie* pieces,
		GTrie<int>* ppieces,
		std::vector<std::string>& words,
		std::vector<int>& qty);
};

#endif
